package LigacaoBd;

import java.util.*;
import java.sql.*;
/**
  * Classe auxiliar para tratar os resultados de uma query.
  * Guarda o resultado de um ResultSet numa tabela,
  * representada por um Vector que integra matrizes do tipo DataElement.
  */
public class QueryResult {
     private Vector tabela = new Vector();
     
     /**
      * Classe que guarda o resultado de um ResultSet numa tabela,
      * representada por um Vector que integra matrizes do tipo DataElement
      */
     public void populateData(ResultSet rs) throws SQLException {
         ResultSetMetaData metaData = rs.getMetaData();
         int colCnt = metaData.getColumnCount();
         while(rs.next()) {
             for(int i=0;i<colCnt;i++) {
                 DataElement element = new DataElement();
                 element.dataType = metaData.getColumnType(i+1);
                 element.dataTypeName = metaData.getColumnTypeName(i+1);
                 element.colName = metaData.getColumnName(i+1);
                 element.value = rs.getObject(i+1);               
                 
                 tabela.addElement(element);
             }                          
         }
     }     

     /**
      * Inspector para a tabela dos dados retirados do ResultSet
      */
     Vector tabela(){
           return tabela;
     }    
     
     /**
      * Classe embutida que representa cada elemento que é retirado do  
ResulSet,
      * qualquer que seja o seu tipo
      */
     private class DataElement {
         int dataType;
         String dataTypeName;
         Object value;
         String colName;     
         
        @Override
         public String toString(){
             return value.toString();
         }
     }    
}
     